﻿#ifndef JZWEB_LAYOUT_H_
#define JZWEB_LAYOUT_H_

#include <QObject>
#include <QDomDocument>

class JZWebLayout;
class JZWebWidget;
class JZWebWidgetPage;

//JZWebLayoutItem
class JZWebLayoutItem
{
public:
	JZWebLayoutItem();

	JZWebLayout* layout;
	JZWebWidget* widget;
};

class JZWebLayout : public QObject
{
	Q_OBJECT

public:
	JZWebLayout();
	virtual ~JZWebLayout();

	QDomElement render(QDomDocument& doc);

	void addWidget(JZWebWidget* w);
	void addItem(JZWebLayout* w);

protected:
	virtual void applyLayout(QDomElement &layout,QList<QDomElement>& item_list) = 0;

	QList<JZWebLayoutItem> m_items;
};


class JZWebHBoxLayout : public JZWebLayout
{
	Q_OBJECT

public:
	JZWebHBoxLayout();
	virtual ~JZWebHBoxLayout();

	virtual void applyLayout(QDomElement& layout, QList<QDomElement>& item_list);
};

class JZWebVBoxLayout : public JZWebLayout
{
	Q_OBJECT

public:
	JZWebVBoxLayout();
	virtual ~JZWebVBoxLayout();

	virtual void applyLayout(QDomElement& layout, QList<QDomElement>& item_list);
};


class JZWebGridLayout : public JZWebLayout
{
	Q_OBJECT

public:
	JZWebGridLayout();
	virtual ~JZWebGridLayout();

	virtual void applyLayout(QDomElement& layout, QList<QDomElement>& item_list);
};


#endif // !JZWEB_PAGE_H_
